<?php

namespace app\api\controller;


use app\api\model\Member as MemberModel;
use app\api\model\MemberToken;
use think\facade\Filesystem;

class Member
{
    public $memberId;//全局用户ID
    public $memberData;//全局用户数据
    //Java类中 static 在__construct方法中做对Token相关的校验
    //校验规则1：判断客户客户端有没有带上Token
    //校验规则2：判断token是否有效（是否正确，有效期）
    public function __construct()
    {
        //PHP默认执行的第一个方法，与动作 方法无关 一定会被执行
        //echo '测试默认方法<br>';
        //校验规则1：判断客户客户端有没有带上Token
        $token = input('get.token');
        if (empty($token)) output_error('请登录~');
        //校验规则2：判断token是否有效（是否正确，有效期）
        $tokenData = MemberToken::where('token_content', '=', $token)->find();
        if (empty($tokenData)) output_error('Token无效，请重新登录~');
        //判断token是否在有效期内
        if (intval($tokenData['end_time']) < time()) output_error('登录信息已失效，请重新登录~');
        //通过tokenData中的memberid字段读取用户的所有信息
        $this->memberId = $tokenData['member_id'];
        $this->memberData = MemberModel::where('member_id', '=', $this->memberId)->find();
    }

    public function getMemberData()
    {
        $this->memberData['member_avatar'] = URL_AVATAR . $this->memberData['member_avatar'];
        $this->memberData['gender_name'] = $this->memberData['member_gender'] == '1' ? '男' : '女';
        output_data($this->memberData);
    }

    public function modifyAvatar()
    {
        //第一步：接收传输的图片
        $file = request()->file('image');
        // 上传到本地服务器
        $savename = Filesystem::disk('avatar')->putFile('', $file, 'uniqid');
        //第二步：删除用户原有的头像文件
        if ($this->memberData['member_avatar'] != 'default.png') {
            unlink(app()->getRootPath() . 'public\\upload\\image\\avatar\\' . $this->memberData['member_avatar']);
        }
        //第三步：更新用户的头像字段
        MemberModel::where('member_id', '=', $this->memberId)->update(array('member_avatar' => $savename));
        output_data(URL_AVATAR . $savename);
    }

    //修改密码
    public function modifyPassword()
    {
        $oldPass = input('get.old_pass');
        $newPass = input('get.new_pass');
        if (empty($oldPass)) output_error('旧密码不能为空');
        if (empty($newPass)) output_error('新密码不能为空');
        if (strlen($newPass) < 6) output_error('新密码不能小于6位');
        if ($this->memberData['member_password'] != md5($oldPass)) output_error('旧密码不正确');
        //第三步：更新用户的密码
        MemberModel::where('member_id', '=', $this->memberId)->update(array('member_password' => md5($newPass)));
        output_data(1);
    }

    //修改昵称
    public function modifyNickname()
    {
        //昵称唯一
        $newName = input('get.new_name');
        if (empty($newName)) output_error('新昵称不能为空');
        if (strlen($newName) < 4) output_error('新昵称不能小于4位');
        $data = MemberModel::where('member_nickname', '=', $newName)->find();
        if (!empty($data)) output_error('昵称已被使用');
        MemberModel::where('member_id', '=', $this->memberId)->update(array('member_nickname' => $newName));
        output_data(1);
    }

    //修改性别
    public function modifyGender()
    {
        //男使用1，女使用2
        $newGender = input('get.new_gender');
        MemberModel::where('member_id', '=', $this->memberId)->update(array('member_gender' => ($newGender)));
        output_data(1);
    }

}
